package com.cheer.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cheer.common.Page;
import com.cheer.dto.OaLearnClassAddDTO;
import com.cheer.dto.OaLearnClassUpdateDTO;
import com.cheer.entity.OaLearnClassEntity;
import com.cheer.vo.OaLearnClassInfoVO;
import com.cheer.vo.OaLearnClassListVO;
import com.cheer.vo.SimpleObjectVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 部门表
 *
 * @author cheer
 */
public interface OaLearnClassService extends IService<OaLearnClassEntity> {

    /**
     * 添加单位
     */
    OaLearnClassEntity add(OaLearnClassAddDTO learnClassAddDTO);

    /**
     * 查询单位的子单位
     */
    List<SimpleObjectVO> sub(Integer id);

    /**
     * 分页查询单位下的子单位
     */
    Page<OaLearnClassListVO> list(Integer pageNum, Integer pageSize, Integer id);

    /**
     * 删除单位
     */
    void delete(Integer id);

    /**
     * 修改单位
     */
    void update(OaLearnClassUpdateDTO learnClassUpdateDTO);

    /**
     * 查询单位详情
     */
    OaLearnClassInfoVO info(Integer id);

    /**
     * 分页查询单位下的一级子单位
     */
    IPage<OaLearnClassEntity> listByPid(Integer pageNum, Integer pageSize, Integer pid);

    /**
     * 查询单位下的一级子单位
     */
    List<OaLearnClassEntity> listByPid(Integer pid);

    /**
     * 下载单位
     */
    void download(Integer id, HttpServletResponse response);

    List<OaLearnClassEntity> listByIdAndPid(Integer pid);

    List<OaLearnClassEntity> importLearnClass(Integer pid, MultipartFile file);

    void importAll(MultipartFile file);

    /**
     * 查询机构根据
     * @return
     */
    List<OaLearnClassEntity> listSchool();

    /**
     * 根据类型查询学校相关机构
     * @param type
     * @return
     */
    List<OaLearnClassEntity> listSchool(Integer type);

    /**
     * 区县
     * @return
     */
    List<OaLearnClassEntity> listPrefecture();


    /**
     * 根据PID获取ORGPath
     * @param pid
     * @return
     */
    String getOrgPathByPid(Integer pid);


}

